home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / snakeoil.lqr / IBM.C < prev    next >
Text File  |  1985-07-06  |  3KB  |  89 lines

  1. /*************************************************************************
  2.  (CI-C86)                                                 Karl L. Remmler
  3.                                  ibmfns.c
  4.  
  5. NOTES:  These functions are intended  for the IBM-PC. They are necessary 
  6.         because  the IBM lacks  a system interface  for screen display
  7.         functions.  Therefore screen display functions, must be called
  8.         by system interrupts.
  9.  
  10. ***************************************************************************/
  11.  
  12. struct regval { int ax,bx,cx,dx,si,di,ds,es; };
  13.  
  14. /*=========================================================================
  15.  
  16.                      initscr.c  -  initialize CRT screen                */
  17. cls()
  18. {
  19.    struct regval reg; 
  20.    reg.ax = 0x0002;                   /* . . .set mode to BW 80X25 */
  21.    sysint(0x10, ®, ®);          /* . . . . execute interrupt */
  22.  
  23.    reg.ax = 0x0500;                   /* . . . . .select page zero */
  24.    sysint(0x10, ®, ®); 
  25.  
  26.    reg.ax = 0x0600;                   /* . . . clear entire screen */
  27.    reg.bx = 0x0200;                   /* . . . . .  normal display */
  28.    reg.cx = 0x0101;                   /* . . . . upper left corner */
  29.    reg.dx = 0x184F;                   /* . . .  lower right corner */
  30.    sysint(0x10, ®, ®);
  31.    return(0);
  32. }
  33.  
  34.  
  35. /*========================================================================
  36.  
  37.                           Address Cursor                            */
  38. locate(row,col)
  39. int row,col;
  40. {
  41.    struct regval reg; 
  42.  
  43.    reg.ax = 0x0200;
  44.    reg.bx = 0x0000;
  45.    reg.dx = (row <<8 ) + col;
  46.    sysint(0x10, ®, ®);
  47.    return(0); 
  48. }
  49.  
  50. /*========================================================================
  51.  
  52.                 Erase to end of line                */
  53. eeol()                                          
  54.    struct regval sreg, rreg; 
  55.  
  56.    sreg.ax = 0x0300;             /* read cursor position */ 
  57.    sreg.bx = 0x0000; 
  58.    sysint(0x10, &sreg, &rreg); 
  59.  
  60.    sreg.cx = rreg.dx;              /* erase */ 
  61.    sreg.ax = 0x0600; 
  62.    sreg.bx = 0x0200;   
  63.    sreg.dx = 0x18F4; 
  64.    sysint(0x10, &sreg, &rreg); 
  65.    return(0);
  66. }
  67.  
  68.  
  69. /*=======================================================================
  70.  
  71.                           Erase entire line                            */ 
  72. eel() 
  73. {
  74.    struct regval sreg, rreg;
  75.  
  76.    sreg.ax = 0x0300;    /* read cursor postion */
  77.    sreg.bx = 0x0000;
  78.    sysint(0x10, &sreg, &rreg);
  79.    
  80.    sreg.cx = rreg.dx & 0xFF00;
  81.    sreg.ax = 0x0600;
  82.    sreg.bx = 0x0200;
  83.    sreg.dx = 0x18F4;
  84.    sysint(0x10, &sreg, &rreg);
  85.    return(0);
  86. }
  87.  
  88.